/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package appvideo.logica;

import appvideo.persistencia.PersistenciaPromocion;
import java.sql.SQLException;
import java.util.Date;
import java.util.List;

/**
 *
 * @author JAVA
 */
public class PromocionesMasPorMenos extends Promociones {
    private int noAlquilados; //Número de alquileres cobrados
    private int noEntregados; //Número de alquileres otorgados



    //Constructor

    public PromocionesMasPorMenos(int id, String nombre, Date fechaInicio, Date fechaFinal, boolean activa, int noAlquilados, int noEntregados, String tipo) {
        super(id, nombre, fechaInicio, fechaFinal, activa, tipo);
        this.noAlquilados = noAlquilados;
        this.noEntregados = noEntregados;
    }
       
    public PromocionesMasPorMenos(String nombre, Date fechaInicio, Date fechaFinal, boolean activa, int noAlquilados, int noEntregados, String tipo) {
        super(nombre, fechaInicio, fechaFinal, activa, tipo);
        this.noAlquilados = noAlquilados;
        this.noEntregados = noEntregados;
    }

    public PromocionesMasPorMenos() {
    }    
    
    public int getNoAlquilados() {
        return noAlquilados;
    }

    public void setNoAlquilados(int noAlquilados) {
        this.noAlquilados = noAlquilados;
    }

    public int getNoEntregados() {
        return noEntregados;
    }

    public void setNoEntregados(int noEntregados) {
        this.noEntregados = noEntregados;
    }

  
    @Override
   public double damePrecio(List<ProductoAlquilado> pA, Socio s) {        
        double precio=0.00; //Precio total
        double aux = (double)(this.noEntregados-this.noAlquilados);
        double descuento = (aux/this.noEntregados);        
        int totalProductos = pA.size();
        double sumaTarifa=0;        
        
        int cont=0;
        //Si el total de productos del alquiler, es igual o mayor al mínimo requerido-> Aplica la promocion
        if(totalProductos>=this.noAlquilados){
            for (ProductoAlquilado paL : pA) {                       
                Producto p = paL.getProducto();            
                Tarifa t = p.getTarifa();
                sumaTarifa = sumaTarifa + t.getPrecio(); 
                //Si alquilo mas de los permitidos, a esos no se le aplica el descuento
                if(cont<=this.noAlquilados){
                    precio = sumaTarifa - (sumaTarifa * descuento);
                }else{
                    precio = precio + t.getPrecio();
                }
                cont++;
            }
        }else{
            precio=sumaTarifa;
        }
                         
        return precio;                                    
    }    

    @Override
    public void insertaPromocion() throws SQLException {
        PersistenciaPromocion.insertaMasPorMenos(this);
    }

    @Override
    public void visualizaPromocion() throws SQLException {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    
    @Override
    public List<Promociones> visualizarPromociones(String filtro) {
        return PersistenciaPromocion.getPromocioness(this, filtro);
    }    

    @Override
    public void modificaPromocion() throws SQLException {
        PersistenciaPromocion.modificaMasPorMenos(this);
    }

    @Override
    public String toString() {
        return super.getId()+"\tTipo:" + super.getTipo() + "\tNombre:" + super.getNombre() + "\t\tNúmero de Alquileres:"  + noAlquilados + "\tNúmero de Entregados:" + noEntregados + "";
    }

    @Override
    public List<Promociones> visualizarPromocionesActivas() {
        return PersistenciaPromocion.getPromocionesActivas(this);
    }
    
  public static PromocionesMasPorMenos buscaPromocion(String cadena) {
        return (PromocionesMasPorMenos)PersistenciaPromocion.buscaPromociones(cadena, new PromocionesMasPorMenos());
    }  
  
    
}
